library(groundhog)
## Loaded 'groundhog' (version:2.0.1) using R-4.2.1
## Tips and troubleshooting: https://groundhogR.com
## groundhog says:
## 
## 
## 
##           OUTDATED GROUNDHOG
##             You are using version  '2.0.1
##             The current version is '2.1.0'
## 
##             You can read about the changes here: https://groundhogr.com/changelog
## 
## Update by running: 
## install.packages('groundhog')
pkgs <-  c("tidyverse","here", "igraph", "ggplot2", "GGally", "ggpubr")
groundhog.day <- '2022-07-25'
groundhog.library(pkgs, groundhog.day)
## Registered S3 methods overwritten by 'readr':
##   method                    from 
##   as.data.frame.spec_tbl_df vroom
##   as_tibble.spec_tbl_df     vroom
##   format.col_spec           vroom
##   print.col_spec            vroom
##   print.collector           vroom
##   print.date_names          vroom
##   print.locale              vroom
##   str.col_spec              vroom
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.8     ✔ dplyr   1.0.9
## ✔ tidyr   1.2.0     ✔ stringr 1.4.0
## ✔ readr   2.1.2     ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## Succesfully attached 'tidyverse_1.3.2'
## 
## here() starts at /Users/jacobelder/Documents/GitHub/IdentityNetLongit
## 
## Succesfully attached 'here_1.0.1'
## 
## 
## Attaching package: 'igraph'
## 
## 
## The following objects are masked from 'package:dplyr':
## 
##     as_data_frame, groups, union
## 
## 
## The following objects are masked from 'package:purrr':
## 
##     compose, simplify
## 
## 
## The following object is masked from 'package:tidyr':
## 
##     crossing
## 
## 
## The following object is masked from 'package:tibble':
## 
##     as_data_frame
## 
## 
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## 
## 
## The following object is masked from 'package:base':
## 
##     union
## 
## 
## Succesfully attached 'igraph_1.3.4'
## 
## The package 'ggplot2_3.3.6' is already attached.
## 
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
## 
## Succesfully attached 'GGally_2.1.2'
## 
## Succesfully attached 'ggpubr_0.4.0'
here::i_am("Visualization/networkTimePanel.Rmd")
## here() starts at /Users/jacobelder/Documents/GitHub/IdentityNetLongit
fullLong <- read.csv(here("Data/longIdentityNet.csv"))
fullShort <- read.csv(here("Data/shortIdentityNet.csv"))
fullData <- fullLong %>% full_join(fullShort, by = c("subID","Time"))

allTimesIDs <- unique(fullData$subID[which(fullData$Time==4)])
allTimes <- fullData[fullData$subID %in% allTimesIDs,]
tapply(allTimes$identity, allTimes$subID, function(x) length(unique(x)))
## 51223 55759 57241 57314 57437 57539 58102 58539 58568 58593 58668 58679 58755 
##     6     8    11     6     6     3     6     4     7     5     8     7     4 
## 58800 58849 58850 58926 59101 59144 59190 59220 59243 59306 59373 59400 60102 
##     4     4    10     5     3     6     4     3     4    15     4     5     6 
## 60573 60594 60610 60633 60682 60686 60701 60768 60785 60786 60855 60958 60972 
##     3    11     3     7     4     5     5     4     6     5     3     5     8 
## 61037 61048 61075 61659 61669 61684 61714 61788 61843 61853 62066 
##     3     4     2     5     6     5     6     4     5     5    10
sub <- 57241

load("/Volumes/Research Project/Longitudinal Identity Network/Data/cleanedWorkspace.RData")

How many timepoints per participant

uIds <- unique(fullData$subID)
timeMat <- matrix(nrow=0, ncol=2)
for(i in uIds){
 uTime <- unique(fullData$Time[fullData$subID==i]) 
 timeMat <- rbind(timeMat, cbind(rep(i,length(uTime)), uTime))
}
colnames(timeMat) <- c("subID", "time")
timeMat <- as.data.frame(timeMat)
timeMat <- timeMat %>% arrange(subID, time)

Generate and print all plots for all participants and all timepoints

for(s in uIds){
  
  maxTime <- max(timeMat$time[timeMat$subID==s])
  listGraphs <- lapply(1:maxTime, function(x) get(paste0("subIGraphW.",s,"_",x)))
  
  print(paste0("Subject ",s))

  for(i in 1:maxTime){
    
    if(vcount(listGraphs[[i]])<2){ # if only 1 identity, skip
      next
    }
    
    if(ecount(listGraphs[[i]]) > 0){
      
      set.seed(2)
      
      plotSingle <- ggnet2(listGraphs[[i]], alpha = 0.75, size = "degree", color = "phono",
                              edge.color = "grey", edge.size = E(listGraphs[[i]])$weight, mode = "kamadakawai", label = T, layout.exp = .65) + 
      guides(color = "none", size = "none") +
        theme( panel.border = element_rect(colour = "black", fill=NA, size=5) )
      
    }else if(ecount(listGraphs[[i]])==0){
      
    plotSingle <- ggnet2(listGraphs[[i]], alpha = 0.75, size = "degree", color = "phono", mode = "kamadakawai", label = T, layout.exp = .65) + 
      guides(color = "none", size = "none") +
  theme(plot.background = element_rect(color = "black", size = 3))

    }
    
    assign(paste0('p',i), plotSingle)
    
    print(paste0("Time ",i))
    print(plotSingle)

  }
  
  # Plot different grid arrange depending on how many timepoints appeared
  if(maxTime==1){
    plotComb <- p1
  }else if(maxTime==2){
    plotComb <- ggpubr::ggarrange(p1,p2,nrow=2,ncol=1,labels=c("T1","T2"))
  }else if(maxTime==3){
    plotComb <- ggpubr::ggarrange(p1,p2,p3,nrow=3,ncol=1,labels=c("T1","T2","T3"))
  }else if(maxTime==4){
    plotComb <- ggpubr::ggarrange(p1,p2,p3,p4,nrow=4,ncol=1,labels=c("T1","T2","T3","T4"))
  }
  
  plotComb <- annotate_figure(plotComb, top = text_grob(paste0("Subject", s), 
               color = "black", face = "bold", size = 14)) + theme(plot.background = element_rect(color = "red", size = 3))
  
}
## [1] "Subject 47043"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 51223"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 52203"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 53449"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 53774"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 53946"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 54336"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 54692"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 55177"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 55759"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 56083"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 57103"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 57241"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 57289"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 57314"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 57373"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 57437"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 57539"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 57800"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 57955"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58102"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58114"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58119"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58236"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58432"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58460"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58530"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58538"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58539"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58565"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58568"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58593"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58613"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58652"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58668"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58679"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58755"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58779"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58800"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58820"
## [1] "Subject 58844"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58849"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58850"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58873"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58899"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58926"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 58950"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 58969"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 58971"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59043"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59053"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59055"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59094"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59095"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59099"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59101"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59125"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59142"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59143"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59144"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59164"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59190"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59212"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59220"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59243"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59251"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59260"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59306"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59360"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 59373"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59391"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59400"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 59413"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 59432"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60084"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60102"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60142"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60143"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60146"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60147"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60160"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60311"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60551"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60557"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60573"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60583"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60589"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60594"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60601"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60610"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60633"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60644"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60682"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60686"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60691"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60693"
## [1] "Subject 60697"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60701"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60709"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60716"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60721"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60734"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60759"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60768"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60781"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 60785"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60786"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60789"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60830"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60838"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60855"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60860"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 60958"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60972"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 60998"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61008"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61013"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61037"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61047"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61048"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61058"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61075"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61630"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61651"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61659"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61661"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61663"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61669"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61684"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61714"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61727"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61729"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61774"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61775"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61788"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61813"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61824"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61833"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61843"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61851"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61853"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 61876"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61920"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61921"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61927"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61935"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 61965"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 61996"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 62017"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 62018"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 62019"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 62033"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 62035"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Subject 62066"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"

## [1] "Time 4"

## [1] "Subject 62080"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Subject 62125"
## [1] "Time 1"

## [1] "Time 2"

## [1] "Time 3"